<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * 用户模型
 * author : hxq
 * date : 2017-10-25.
 */
class User extends Model
{
    public $timestamps = false;

    protected $table = 'user';

    protected $primaryKey = 'userID';

    //白名单
    protected $fillable = [
        'userID', //ID
        'phone', //手机号
        'account', //用户账号
        'password', //密码
        'pay_code', //支付密码
        'nickname', //昵称
        'sex', //性别 1男2女
        'headimg', //头像
        'type', //用户类型 1为创客，2为商家，3为填写推荐人通过实名认证（vip会员），4为未填写推荐人会员，默认为4
        'cityID', //地域信息
        'level', //等级备注：1.当type为1的时候，则该值有效，1为行代，2为省代，3为市代，4为县代，5为终端 2.当type为2和3的时候，该值为0，默认为0
        'industryID', //行业ID
        'integral', //积分
        'attestation', //认证状态备注：1为未提交身份认证资料，5为身份认证中，6为身份未通过审核，7为身份确定
        'status', //状态码 备注：-1为冻结用户，1为正常用户
        'PID', //父级ID 备注：-1为原点，0为无推荐人，其余为推荐人id，默认为0
        'register_time', //注册时间
        'last_time', //最后登录时间
        'qq', //qq唯一标示
        'weixin', //微信唯一标示
        'sina', //新浪唯一标示
        'token1', //用户版token
        'token2', //商家版token
        'token3', //商家后台token
        'empirical_value', //经验值
        'rank', //经验等级
        'location',
        'islogin1', //会员登陆状态
        'islogin2', //商家登陆状态
        'device1', //设备码-对应会员版
        'device2', //设备码-对应商家版
        'sign', //用户标识
        'realname', //真实姓名
        'headimg_oss',
        'sole',
        'headimg_oss_retry_count', //转存计数器
        'extend', //扩展
        'hx_status', //1为环信正常 2为环信未注册 默认为2
        'account_type', //默认0 1 为修改过账号
        'yx_status', //1代表云信未注册  2代表已注册
        'yx_phone', //1号码未导入 2号码已导入 商家号码不导入
    ];

    protected $casts = ['headimg'];

    public function getHeadimgAttribute($value)
    {
        return \App\Library\HandleFile::handleFilePath($value, $this->headimg_oss);
    }

    //用户与推荐表关联
    public function recommend()
    {
        return $this->hasOne('App\\Models\\Recommend', 'recommendID', 'PID');
    }

    //用户与店铺关联
    public function shop()
    {
        return $this->hasOne('App\\Models\\Shop', 'user_id', 'userID');
    }

    //用户的银行卡
    public function cards()
    {
        return $this->hasMany('App\\Models\\Card', 'userID', 'userID');
    }

    //用户的资产
    public function propertys()
    {
        return $this->hasMany('App\\Models\\Property', 'userID', 'userID');
    }

    //钱包消费记录
    public function consumes()
    {
        return $this->hasMany('App\\Models\\Consume', 'userID', 'userID');
    }

    //关联城市
    public function city()
    {
        return $this->hasOne('App\\Models\\City', 'cityID', 'cityID');
    }

    //用户与实名认证关联.
    public function autonym()
    {
        return $this->hasOne('App\\Models\\Autonym', 'userID', 'userID');
    }

    //用户推荐的创客数
    public function recommend_makers()
    {
        return $this->hasMany('App\\Models\\User', 'PID', 'userID')->where('type', 1);
    }

    //用户推荐的商家数
    public function recommend_shops()
    {
        return $this->hasMany('App\\Models\\User', 'PID', 'userID')->where('type', 2);
    }

    //关联积分记录
    public function integral_list()
    {
        return $this->hasMany('App\\Models\\Integrallist', 'userID', 'userID');
    }
}
